package com.ohos.connect.devicecloud.iot.api;

import com.ohos.connect.devicecloud.iot.model.dto.*;
import com.ohos.connect.devicecloud.iot.model.dto.deviceactive.DeviceActiveDTO;
import com.ohos.connect.devicecloud.iot.model.dto.deviceinfosync.DeviceInfoSyncDTO;
import com.ohos.connect.devicecloud.iot.model.vo.*;
import com.ohos.connect.devicecloud.iot.model.vo.deviceactive.DeviceActiveVO;

import java.util.List;

public interface DeviceApi {

    // 交换设备与云端sn,设备上传sn1，云端返回sn2
    DevicePskVO exchangeDeviceSn(DevicePskDTO devicePskDTO);

    // 设备激活
    DeviceActiveVO activeDevice(DeviceActiveDTO deviceActiveDTO);

    // 设备登录
    DeviceLoginVO loginDevice(DeviceLoginDTO deviceLoginDTO);

    // 设备信息同步
    DeviceInfoSyncVO syncDeviceInfo(List<DeviceInfoSyncDTO> deviceInfoSyncDTOList);

    // 设备数据上报
    DeviceDataVO deviceDataUpload(List<DeviceDataInfoDTO> deviceDataInfoDTOList);

    DeviceDataVO deviceAllShadowDataUpload(List<DeviceNetInfoDTO> deviceDataInfoDTOList);

    DeviceDataVO deviceNetInfoDataUpload(List<DeviceNetInfoDTO> deviceDataInfoDTOList);

    DeviceDataVO deviceControlReturn(DeviceControlDataDTO deviceControlDataDTO);

    // 设备注销
    DeviceRevokeVO deviceRevoke(DeviceRevokeDTO deviceRevokeDTO);

    // 获取设备认证码
    DeviceAuthCodeVO deviceAuthCode(DeviceAuthCodeDTO deviceAuthCodeDTO);

    // 桥下挂设备状态同步
    List<DeviceStatusSyncVO> deviceStatusSync(List<DeviceStatusSyncDTO> deviceStatusSyncDTOList);

    // 燃气泄漏信息上报
    DeviceLeakReportVO deviceLeakReport(DeviceLeakReportDTO deviceLeakReportDTO);

    // 设备上报心跳
    DeviceHeartBeatVO deviceHeartBeat(DeviceHeartBeatDTO deviceHeartBeatDTO);

    // 批量获取设备信息
    List<DeviceInfoVO> getDeviceInfoList(List<String> deviceIdList);

    // 根据设备id获取设备信息
    DeviceInfoVO getDeviceInfoById(String deviceId);
}
